home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3dm / audiofile / AFgetcompression.z / AFgetcompression
Encoding:
Text File  |  2002-10-03  |  22.1 KB  |  331 lines

  1.  
  2.  
  3.  
  4. aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))                                    aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      afGetCompression, afGetCompressionParams - get the compression type and
  10.      parameters for an audio track from an AAAAFFFFffffiiiilllleeeehhhhaaaannnnddddlllleeee structure
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      ####iiiinnnncccclllluuuuddddeeee <<<<ddddmmmmeeeeddddiiiiaaaa////aaaauuuuddddiiiiooooffffiiiilllleeee....hhhh>>>>
  14.  
  15.      iiiinnnntttt aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((AAAAFFFFffffiiiilllleeeehhhhaaaannnnddddlllleeee ffffiiiilllleeee,,,, iiiinnnntttt ttttrrrraaaacccckkkkiiiidddd))))
  16.  
  17.      iiiinnnntttt aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss((((AAAAFFFFffffiiiilllleeeehhhhaaaannnnddddlllleeee ffffiiiilllleeee,,,, iiiinnnntttt ttttrrrraaaacccckkkkiiiidddd,,,,
  18.                       iiiinnnntttt ****ccccoooommmmpppprrrreeeessssssssiiiioooonnnn,,,, AAAAUUUUppppvvvvlllliiiisssstttt ppppvvvvlllliiiisssstttt,,,, iiiinnnntttt nnnnuuuummmmiiiitttteeeemmmmssss))))
  19.  
  20. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRR
  21.      _f_i_l_e          expects an AAAAFFFFffffiiiilllleeeehhhhaaaannnnddddlllleeee structure, previously created by a
  22.                    call to aaaaffffOOOOppppeeeennnnFFFFiiiilllleeee(3dm).
  23.  
  24.      _t_r_a_c_k_i_d       is an integer which identifies an audio track in the file.
  25.                    Since all currently supported file formats allow at most
  26.                    one audio track per file, the value AAAAFFFF____DDDDEEEEFFFFAAAAUUUULLLLTTTT____TTTTRRRRAAAACCCCKKKK should
  27.                    always be used for this argument for now.
  28.  
  29.      _c_o_m_p_r_e_s_s_i_o_n   is a pointer to an integer which will be filled in with the
  30.                    symbolic constant indicating which compression scheme used
  31.                    for the specified audio track.
  32.  
  33.      _p_v_l_i_s_t        is an AAAAUUUUppppvvvvlllliiiisssstttt structure previously created via a call to
  34.                    AAAAUUUUppppvvvvnnnneeeewwww(3dm), initialized with parameters and parameter
  35.                    types using AAAAUUUUppppvvvvsssseeeettttppppaaaarrrraaaammmm(3dm) and AAAAUUUUppppvvvvsssseeeettttvvvvaaaallllttttyyyyppppeeee(3dm).  It
  36.                    will be filled with parameter values related to the
  37.                    compression scheme of the specified audio track.
  38.  
  39.      _n_u_m_i_t_e_m_s is the number of valid entries in the _p_v_l_i_s_t.
  40.  
  41. RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEE
  42.      aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn(((()))) returns a positive symbolic integer constant which
  43.      describes the type of audio compression used for the specified audio
  44.      track, or -1 on failure.
  45.  
  46.      aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(((()))) returns the same symbolic integer in
  47.      _c_o_m_p_r_e_s_s_i_o_n.  Additionally, the codec-specific parameters of _p_v_l_i_s_t are
  48.      scanned up to _n_u_m_i_t_e_m_s and the values are filled in.
  49.  
  50. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  51.      Both aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn(((()))) and aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(((()))) are obsolete, having
  52.      been replaced by aaaaffffGGGGeeeettttFFFFoooorrrrmmmmaaaattttPPPPaaaarrrraaaammmmssss(3dm), which uses the newer
  53.      DDDDMMMMppppaaaarrrraaaammmmssss(3dm) parameter lists.  These older routines remain for backwards
  54.      compatibility.
  55.  
  56.      aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn(((()))) returns the type of audio compression used for an
  57.      audio track.  Valid compression identifiers include:
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))                                    aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))
  71.  
  72.  
  73.  
  74.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____NNNNOOOONNNNEEEE              no compression
  75.  
  76.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777711111111____UUUULLLLAAAAWWWW         64kbps CCITT G.711 ulaw encoding, 8 kHz
  77.                                       16-bit
  78.  
  79.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777711111111____AAAALLLLAAAAWWWW         64 kbps CCITT G.711 alaw encoding, 8kHz
  80.                                       16-bit
  81.  
  82.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777722222222              64 kbps CCITT G.722 ADPCM, 16 kHz 16-bit
  83.  
  84.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777722226666              16, 24, 32, or 40 kbps CCITT G.726
  85.                                       ADPCM, 8 kHz 16-bit
  86.  
  87.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777722228888              16 kbps CCITT G.728 ADPCM, 8 kHz 16-bit
  88.  
  89.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGGSSSSMMMM               13 kbps European GSM 06.10 encoding, 8
  90.                                       kHz 16-bit
  91.  
  92.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____DDDDVVVVIIII____AAAAUUUUDDDDIIIIOOOO         32 kbps DVI ADPCM, 8 kHz 16-bit
  93.  
  94.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____FFFFSSSS1111000011116666            48, 72, or 96 kbps US Federal Standard
  95.                                       1016 CELP, 8 kHz, 16-bit
  96.  
  97.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____MMMMPPPPEEEEGGGG1111             ISO/MPEG-1 Layers I and II.
  98.  
  99.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAWWWWAAAARRRREEEE____MMMMUUUULLLLTTTTIIIIRRRRAAAATTTTEEEE   Aware, Inc's MultiRate I near-lossless
  100.                                       or lossless algorithm.
  101.  
  102.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAPPPPPPPPLLLLEEEE____AAAACCCCEEEE3333        not supported on SGI systems
  103.  
  104.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAPPPPPPPPLLLLEEEE____AAAACCCCEEEE8888        not supported on SGI systems
  105.  
  106.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAPPPPPPPPLLLLEEEE____MMMMAAAACCCC3333        not supported on SGI systems
  107.  
  108.      AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____AAAAPPPPPPPPLLLLEEEE____MMMMAAAACCCC6666        not supported on SGI systems
  109.  
  110.      The four Apple compression algorithms listed above are Apple-proprietary,
  111.      and are not supported by the SGI Audio File Library.
  112.  
  113.      aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(((()))) returns, via the _p_v_l_i_s_t argument, a list of
  114.      compression parameters and their values associated with the current
  115.      compression scheme.
  116.  
  117.      The parameters will be a subset of the following.  Parameter type is
  118.      AAAAUUUU____PPPPVVVVTTTTYYYYPPPPEEEE____LLLLOOOONNNNGGGG unless otherwise noted:
  119.  
  120.      AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____LLLLAAAAYYYYEEEERRRR
  121.           indicates MPEG layer:
  122.  
  123.           AAAAFFFF____MMMMPPPPEEEEGGGG____LLLLAAAAYYYYEEEERRRR____IIII
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))                                    aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))
  137.  
  138.  
  139.  
  140.           AAAAFFFF____MMMMPPPPEEEEGGGG____LLLLAAAAYYYYEEEERRRR____IIIIIIII (default)
  141.  
  142.      AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____CCCCHHHHAAAANNNNNNNNEEEELLLL____PPPPOOOOLLLLIIIICCCCYYYY //// AAAAFFFF____AAAAWWWWAAAARRRREEEE____PPPPAAAARRRRAAAAMMMM____CCCCHHHHAAAANNNNNNNNEEEELLLL____PPPPOOOOLLLLIIIICCCCYYYY
  143.           indicates how multiple channels are treated:
  144.  
  145.           AAAAFFFF____MMMMPPPPEEEEGGGG____SSSSTTTTEEEERRRREEEEOOOO //// AAAAFFFF____AAAAWWWWAAAARRRREEEE____SSSSTTTTEEEERRRREEEEOOOO
  146.                indicates that the channels are part of a single multi-channel
  147.                signal.  This includes 4-channel, etc.;
  148.  
  149.           AAAAFFFF____MMMMPPPPEEEEGGGG____JJJJOOOOIIIINNNNTTTT____SSSSTTTTEEEERRRREEEEOOOO (default)
  150.                indicates that the algorithm may have attempted to exploit
  151.                redundancy between channels for greater coding gain; Not valid
  152.                for MultiRate.
  153.  
  154.           AAAAFFFF____MMMMPPPPEEEEGGGG____IIIINNNNDDDDEEEEPPPPEEEENNNNDDDDEEEENNNNTTTT //// AAAAFFFF____AAAAWWWWAAAARRRREEEE____IIIINNNNDDDDEEEEPPPPEEEENNNNDDDDEEEENNNNTTTT
  155.                indicates that the separate channels are unrelated and were
  156.                processed separately, such as multi-lingual sound tracks.
  157.  
  158.           Note that all of these settings only have meaning for a multi
  159.           channel signal.
  160.  
  161.      AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____TTTTAAAARRRRGGGGEEEETTTT (not for Aware MultiRate)
  162.           indicates the bitrate for all channels of compressed data, in bits
  163.           per second.  Note that for some schemes such as MPEG's maxrate (not
  164.           implemented) this is treated as an upper limit, whereas for MPEG's
  165.           fixrate, this is strictly achieved as a constant rate.  The
  166.           following is a list of valid bitrates for MPEG.
  167.  
  168.           Layer 1:
  169.                32000, 64000, 96000, 128000, 160000, 192000, 224000, 256000,
  170.                288000, 320000, 352000, 384000, 416000, and 448000.
  171.  
  172.           Layer 2:
  173.                32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000,
  174.                160000, 192000, 224000, 256000, 320000, and 384000.
  175.  
  176.      Default value is 192 kbps / channel for layer 1 and 128 kbps / channel
  177.      for layer 2.
  178.  
  179.      AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____PPPPOOOOLLLLIIIICCCCYYYY //// AAAAFFFF____AAAAWWWWAAAARRRREEEE____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____PPPPOOOOLLLLIIIICCCCYYYY
  180.           The mode of bit assignment:  The valid values depend on the
  181.           algorithm, as indicated below.
  182.  
  183.           AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____PPPPOOOOLLLLIIIICCCCYYYY (SGI MPEG):
  184.  
  185.                AAAAFFFF____MMMMPPPPEEEEGGGG____FFFFIIIIXXXXEEEEDDDD____RRRRAAAATTTTEEEE (default)
  186.                     Fixed bitrate per second.
  187.                     The Compression ratio is determined by value of
  188.                     AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____TTTTAAAARRRRGGGGEEEETTTT.
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))                                    aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))
  203.  
  204.  
  205.  
  206.                AAAAFFFF____MMMMPPPPEEEEGGGG____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL
  207.                     Bitrate is driven by the psychoacoustic model.  Enough
  208.                     bits are assigned so that a constant Mask to Noise ratio
  209.                     is attained.  See AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL____NNNNMMMMRRRR.
  210.  
  211.           AAAAFFFF____AAAAWWWWAAAARRRREEEE____PPPPAAAARRRRAAAAMMMM____BBBBIIIITTTTRRRRAAAATTTTEEEE____PPPPOOOOLLLLIIIICCCCYYYY (Aware MultiRate):
  212.  
  213.                AAAAFFFF____AAAAWWWWAAAARRRREEEE____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL
  214.                     Enough bits are assigned so that the signal is 90+ dB
  215.                     above the quantization noise.
  216.                     Compression ratios are typically between 2.5:1 and 4:1.
  217.  
  218.                AAAAFFFF____AAAAWWWWAAAARRRREEEE____LLLLOOOOSSSSSSSSLLLLEEEESSSSSSSS
  219.                     Enough bits are assigned to provide for perfect
  220.                     reconstruction.
  221.                     Compression ratios are typically between 2:1 and 3:1.
  222.  
  223.      AAAAFFFF____MMMMPPPPEEEEGGGG____PPPPAAAARRRRAAAAMMMM____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL____NNNNMMMMRRRR (not for Aware MultiRate)
  224.           For SGI MPEG with AAAAFFFF____AAAAWWWWAAAARRRREEEE____CCCCOOOONNNNSSSSTTTT____QQQQUUUUAAAALLLL, indicates the constant
  225.           quality mode noise-to-mask ratio in dB.  Zero indicates a theoretic
  226.           psychoacoustic imperceptible compression.  Positive values indicate
  227.           more compression and audible noise.  Negative values indicate less
  228.           compression and less perceptible noise.  The type of value of this
  229.           parameter is AAAAUUUU____PPPPVVVVTTTTYYYYPPPPEEEE____DDDDOOOOUUUUBBBBLLLLEEEE....
  230.  
  231. IIIIMMMMPPPPOOOORRRRTTTTAAAANNNNTTTT NNNNOOOOTTTTEEEE
  232.      Because this routine has been obsoleted, it only returns compression
  233.      parameters associated with MPEG1 and Aware, Inc. MultiRate compression
  234.      schemes.  All other compression schemes' parameters must be retrieved via
  235.      aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(3dm).
  236.  
  237. CCCCAAAAVVVVEEEEAAAATTTTSSSS
  238.      In future releases, new compression methods will be supported, so the
  239.      same warnings that apply to aaaaffffGGGGeeeettttSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) (see the _C_A_V_E_A_T_S
  240.      section of aaaaffffGGGGeeeettttSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) for these important notes) apply here.
  241.      Because the library transparently decompresses input data and compresses
  242.      output data regardless of the form of compression in the file, this may
  243.      not seem like an issue.  All currently defined codecs convert the
  244.      compressed data to and from AAAAFFFF____SSSSAAAAMMMMPPPPFFFFMMMMTTTT____TTTTWWWWOOOOSSSSCCCCOOOOMMMMPPPP, 16-bit data. However,
  245.      this is by no means guaranteed for future compression types.  So when
  246.      reading or writing a file (even an AIFF-C file) containing compressed
  247.      data, a program must call aaaaffffGGGGeeeettttSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) to get the "native"
  248.      sample format of the codec, and check that the program is able to
  249.      read/write using this sample format.  The "native" sample format of a
  250.      codec is defined as the sample format of the data produced on
  251.      decompression or expected for compression.
  252.  
  253.      All currently-released codecs in the Audio File Library will not change
  254.      their native sample format, if the documentation currently specifies what
  255.      that codec's native sample format is.  So, for example, if a programmer
  256.      knows that the file format is AAAAFFFF____CCCCOOOOMMMMPPPPRRRREEEESSSSSSSSIIIIOOOONNNN____GGGG777711111111____UUUULLLLAAAAWWWW, then the
  257.      programmer can assume that the native format for that codec is
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))                                    aaaaffffGGGGeeeettttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn((((3333ddddmmmm))))
  269.  
  270.  
  271.  
  272.      AAAAFFFF____SSSSAAAAMMMMPPPPFFFFMMMMTTTT____TTTTWWWWOOOOSSSSCCCCOOOOMMMMPPPP, 16 because this was stated in the documentation.
  273.      This is done to provide backwards compatibility.  However, it is not
  274.      guaranteed that all future supported codecs will generate 16-bit signed
  275.      integer data natively, nor is it guaranteed that all future codecs will
  276.      have a single native sample format (some may be configurable or may vary
  277.      depending on what kind of data was originally compressed).  In every case
  278.      though, the programmer can call aaaaffffGGGGeeeettttSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) to retrieve the
  279.      sample format for the current codec on the file corresponding to the
  280.      given _A_F_f_i_l_e_h_a_n_d_l_e.
  281.  
  282.      There is a means by which an application can request the transparent
  283.      conversion of whatever the native sample format of the codec is to the
  284.      user's desired sample format.  See aaaaffffSSSSeeeettttVVVViiiirrrrttttuuuuaaaallllSSSSaaaammmmpppplllleeeeFFFFoooorrrrmmmmaaaatttt(3dm) for a
  285.      detailed explanation.  The library offers a runtime query of all of the
  286.      supported compression methods, their textual names, their compression
  287.      ratios (if available), and any other info that may be useful in making a
  288.      runtime choice of codec.
  289.  
  290. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  291.      aaaaffffOOOOppppeeeennnnFFFFiiiilllleeee(3dm), aaaaffffRRRReeeeaaaaddddFFFFrrrraaaammmmeeeessss(3dm), aaaaffffIIIInnnniiiittttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnn(3dm),
  292.      aaaaffffIIIInnnniiiittttCCCCoooommmmpppprrrreeeessssssssiiiioooonnnnPPPPaaaarrrraaaammmmssss(3dm), aaaawwwwaaaarrrreeee(5), AAAAUUUUppppvvvvnnnneeeewwww(3dm)
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.